package com.jiusit.golf.api;

import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;

import com.webbuilder.common.Var;
import com.webbuilder.utils.StringUtil;

/** 
 * 说明： 
 * 
 * @author  王汝绘 
 * @version 创建时间：2015年12月28日 下午4:42:59 
 */
public class OrderAPI{
	//确认付款
	public static String orderquery(String out_trade_no){
		Map<String, String> params = new HashMap<String, String>();
		String transaction_id = "";
		try {
			// 参数
			String	appid = Var.get("webbuilder.appid");// 公众号id 
			String mch_id = Var.get("webbuilder.mch_id");// 商户id
			String nonce_str = StringUtil.getRoundNum(8); // 8位随机数
			params.put("appid", appid);
			params.put("mch_id", mch_id); 
			params.put("nonce_str", nonce_str); 
			params.put("out_trade_no", out_trade_no);
			String packagestring = Pay.setSign(params, Var.get("webbuilder.paySignKey")); // 构造签名
			String  orderUrl = "appid="+appid+"&mch_id="+mch_id+"&out_trade_no="+out_trade_no+"&nonce_str="+nonce_str+"&sign="+packagestring;
			// 将键值对转换成xml字符串
			orderUrl = Pay.keyvalue2XML(orderUrl);
			String result = HttpKit.post("https://api.mch.weixin.qq.com/pay/orderquery", orderUrl);
			result = URLDecoder.decode(result, "utf-8");
			Map<String, String> map = Pay.xml2Map(result);
			String return_code = map.get("return_code");
			if ("SUCCESS".equals(return_code)) {
				String result_code = map.get("result_code");
				if ("SUCCESS".equals(result_code)) {
					transaction_id = map.get("transaction_id");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return 	transaction_id;
	}
	//退款
	public static boolean refund(String out_trade_no,int total_fee,int refund_fee,String op_user_id){
		Map<String, String> params = new HashMap<String, String>();
		boolean flag=false;
		try {
			// 参数
			String	appid = Var.get("webbuilder.appid");// 公众号id 
			String mch_id = Var.get("webbuilder.mch_id");// 商户id
			String nonce_str = StringUtil.getRoundNum(8); // 8位随机数
			params.put("appid", appid);
			params.put("mch_id", mch_id); 
			params.put("nonce_str", nonce_str); 
			params.put("out_trade_no", out_trade_no);
			params.put("out_refund_no", out_trade_no);
			params.put("total_fee", total_fee+"");
			params.put("refund_fee", refund_fee+"");
			params.put("op_user_id", op_user_id);
			String packagestring = Pay.setSign(params, Var.get("webbuilder.paySignKey")); // 构造签名
			String  orderUrl = "appid="+appid+"&mch_id="+mch_id+"&out_trade_no="+out_trade_no+"&nonce_str="+nonce_str+"&sign="+packagestring;
			orderUrl+="&out_refund_no="+out_trade_no+"&total_fee"+total_fee+"&refund_fee"+refund_fee+"&op_user_id"+op_user_id;
			// 将键值对转换成xml字符串
			orderUrl = Pay.keyvalue2XML(orderUrl);
			String result = HttpKit.post("https://api.mch.weixin.qq.com/secapi/pay/refund", orderUrl);
			result = URLDecoder.decode(result, "utf-8");
			Map<String, String> map = Pay.xml2Map(result);
			String return_code = map.get("return_code");
			if ("SUCCESS".equals(return_code)) {
				String result_code = map.get("result_code");
				if ("SUCCESS".equals(result_code)) {
					flag = true;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return 	flag;
	}
}
